Immersive Sprint - underbar review

check point 1-2 solution

// check point 1

6. call stack -> 순서대로 보기

8. outer() 들어가자마자 x를 var로 새로 선언하고,
   inner() 호출만 시키고, 리턴이 없기 때문에 글로벌 scope만 보면 됨.
   만약 리턴을 해준다고 해도, 대입을 새롭게 해주지 않았기 때문에.
   그냥 var x = 10;

var x = 10;
function outer () {
  var x = 20;
  function inner () {
    x = x + 10;
    return x;
  }
  inner();
}

outer();

var result = x;


9. inner의 x는 신경쓰지 않아도 되는 이유는
var로 새로 선언했기 때문에 local scope이기 때문.

var x = 10;
function outer () {
  x = 20;
  function inner () {
    var x = x + 20;
    return x;
  }
  inner();
}

outer();

var result = x;

// check point 2

3. 3,4 번만 아니어도 어느정도 이해를 하고 있는 셈.

4. 클로저의 정의 :
외부 함수의 context에 접근할 수 있는 내부 함수

inner, outer, 전역

underbar rework

var a = [1,2,3]
a.slice(0,0) // []; 마지막 0은 포함되지 않기 때문에 빈 배열

//deeply equal 과 strictly equal
eql과 equal의 차이 질문

// array.set -> 중복값 제거해줌

each 와 map 차이 -> map은 무조건 리턴

// 일반적인 for of 문
for (let value of iterable) {
  statement
}

// object를 위한 변형
for (let [key, value] of Object.entries(myObj)) {
  // do something with key and value
}

this review

setTimeout//은 기본적으로 window binding, free function invocation
function getSalarayFromServer(callback) {
    setTimeout(function() {
        callback(10000);
    },1000};
}


// Name : undefined undefined Salary 10000 나오는 문제를 해결하기 위해
function member() {
    return {
        first : 'Ingi',
        last : 'Kim',
        age : 40,
        printDetail : function() {
            //var that = this; 2번째 대안
            getSalarayFromServer(function(salary) {
                console.log(`Name: ${this.first} ${this.last}`);
                console.log(`Salary : ${salary}`);
            //}.bind(this)); 1. 대안은 bind
        	}
        }

    }
// ES5의 this는 어디에서보다 어떻게 호출되는지가 중요했으나
// arrow function을 사용한 함수는 어디에서 호출되는지만 고려해도 됨
// arguments를 바인딩하지 않음(REST 파라미터 사용)
//
// Arrow를 안 쓰는 게 직관적인 경우도 있다.
var Foo = () => {}
var foo = new Foo() // error

Strictly Equal vs Deeply equal

Strictly Equal은 === 완전히 동일한 객체를 자신과 비교

Deeply Equal은 동일한 값은 갖지만 === 하지는 않은(자신과는 비교하지 않음)

Object.keys

Object.values

[key,value] Object.entries (key 값과 value 값을 쌍으로 받아옴)

throttle vs debounce 예제

http://jsfiddle.net/missinglink/19e2r2we

Throttle, Debounce 개념 잡기 (검색 키워드 throttle 예시)

그외 참조

자바스크립트 현재시간 timestamp

timestamp = +new Date()

lastrites2018
Written bylastrites2018
I explain with words and code.

👉삽질의 역사는 노션 WIKI에서